Chapter 7 - Compatibility
This chapter describes the differences between the Tachyon 390 Cross
Assembler and the IBM High Level Assembler. There may be other
differences between these assemblers that are not listed in these
chapters. The Tachyon 390 Cross Assembler was designed to be highly
compatible with the documented behavior of the IBM assemblers, but was
written without reference to the actual design and code of the IBM
assemblers. Therefore it is quite possible that assembler language
programs that rely on the undocumented behavior of the IBM assemblers
will not assemble identically with the Tachyon 390 Cross Assembler.
No guarantee of compatibility is provided.
All of the assembly language statements supported by releases 1 and 2
of the IBM High Level Assembler are identically supported by the
Tachyon 390 Cross Assembler, except for the following:
-
- This statement is not supported, however some of the function of the
*PROCESS statement is available through the EXEC
X390 statement.
-
- These statements, added in release 2 of the IBM High Level Assembler
are not supported.
-
- The ISEQ instruction is accepted and properly sets the &SYSSEQF
system variable symbol correctly, but does not activate sequence number
checking.
-
- The MHELP instruction is accepted, but not all of the options produce
exactly the same output as those supported by the IBM assemblers.
-
- The statement following a REPRO instruction is not assigned its own
statement number, but is instead treated as a continuation of the REPRO
statement.
Most of the options supported by releases 1 and 2 of the IBM High
Level Assembler are supported in some form by the Tachyon 390 Cross
Assembler. The differences are:
-
- The ADATA option is not supported.
-
- The assembler always runs as if NOCOMPAT was specified for full
compatibility with the High Level Assembler.
-
- The DBCS option is not supported and the assembler does not recognize
DBCS data nor G-type constants and self-defining terms.
-
- No exits are supported by the assembler, except for
LIBEXIT which is different
from the High Level Assembler exit of the same name.
-
- NOASA is an alias for the
NOPRINTCTL option.
It does not generate machine printer control characters.
-
- The assembler includes the vector operation codes only in the
OPTABLE(UNI) table, not the
ESA, XA, and 370 tables.
Also, the DOS table includes the
ECPS:VSE instructions and all of the assembler operation codes.
-
- The assembler always runs as if PESTOP was specified.
-
- The PROFILE option is not supported.
-
- The WIDE and NARROW parameters of the TERM
option are not supported.
-
- The TRANSLATE option is not supported.
-
- The High Level Assembler’s USING(LIMIT(xxx)) and USING(MAP)
options are available though this assembler’s
USINGLIMIT and
USINGMAP options.
The High Level Assembler’s USING(WARN(n)) options is available
through this assembler’s FLAG option as
follows:
USING(WARN(1)) may be specified as FLAG(USINGDUP).
USING(WARN(2)) may be specified as FLAG(USINGZERO).
USING(WARN(4)) may be specified as FLAG(USINGMULT).
USING(WARN(8)) may be specified through the USINGLIMIT option.
-
- The XOBJECT option is not supported.
The following system variable symbols are defined somewhat differently
by the Tachyon 390 Cross Assembler than by the IBM High Level Assembler.
-
- &SYSASM is set to 'TACHYON 390 CROSS ASSEMBLER'.
-
- &SYSIN_DSN is set to the path name of the
source file or to '(STDIN)'
if the source is being read from stdin.
-
- &SYSIN_MEMBER is set to the upper-cased part of the source file
name between the last directory separator and the first period.
It is set to a zero-length string if the source is being read from stdin.
-
- &SYSJOB is set from the workstation’s node name (or the
HOSTNAME environment variable in OS/2).
If not available, &SYSJOB is set to '(NOJOB)'.
-
- &SYSLIB_DSN is set to the path name of the file containing
the macro definition.
-
- &SYSLIB_MEMBER is set to the upper-cased macro name
if it was implicity defined. If the macro was explicitly defined,
&SYSLIB_MEMBER is set to the value of &SYSIN_MEMBER at the time
of the definition.
-
- &SYSLIN_DSN is set to the Object File
name if the OBJECT(OMF) option is set.
-
- &SYSLIN_MEMBER is set to the upper-cased part of the
Object File name
between the last directory separator and the first period.
-
- &SYSPRINT_DSN is set to the Assembly
Listing file name if the LIST option is set.
-
- &SYSPRINT_MEMBER is set to the upper-cased part of the
Assembly Listing file name
between the last directory separator and the first period.
-
- &SYSPUNCH_DSN is set to the Punch
Deck file name if the DECK option is set.
-
- &SYSPUNCH_MEMBER is set to the upper-cased part of the
Punch Deck file name
between the last directory separator and the first period.
-
- &SYSSTEP is set to the current user ID.
If not available, &SYSSTEP is set to '(NOSTEP)'.
-
- &SYSTEM_ID is set from the SYSTEMID
option value or its default.
-
- &SYSTERM_DSN is set to theAssembly
Messages file name if the TERM option is set.
If the NOSYSTERM option was specified,
&SYSTERM_DSN is set to '(STDOUT)'.
-
- &SYSTERM_MEMBER is set to the upper-cased part of the
Assembly Messages file name
between the last directory separator and the first period.
There are a few other differences between the Tachyon 390 Cross
Assembler and the IBM High Level Assembler, noted as follows:
-
- The external name in the label field of the CSECT, COM, DSECT, DXD,
RSECT and START instructions, the operands of the ENTRY, EXTRN and WXTRN
instructions, and the nominal values of Q-type and V-type constants
may be more than eight characters long if there is a valid associated
ALIAS instruction.
-
- The Tachyon 390 Cross Assembler and the IBM assemblers use different
methods to resolve the lengths of data items that are depenentd on values
defined later in the assembly. As a result there are a few cases where
the IBM and Tachyon assemblers are able to resolve forward length
references that the other assembler cannot.
-
- The first definition
encountered during look-ahead is used for the purposes of resolving the
reference, even if the definition would not have been generated due to
conditional assembly instructions.
-
- Sequence symbols in open code may only be referenced by AIF and AGO
instructions in the same source file or copy member.
-
- The symbols printed in the cross reference and all literals generated
in literal pools are printed in upper case, even if first defined in
mixed or lower case.
Contents
Introduction
Setup
Files
Options
Extensions
Host Libraries
Compatibility
Messages
© Copyright 1995-1997, Tachyon Software® LLC.
Last modified on February 11, 1997